#include "mypushbutton.h"
#include<QDebug>
#include<QPropertyAnimation>
#include"chooselevelscene.h"

MyPushButton::MyPushButton(QString normalImg,QString pressImg)
{
    this->normalPath = normalImg;
    this->pressPath = pressImg;
    //成员变量normalImgPath保存正常显示图片路径
    //成员变量pressedImgPath保存按下后显示的图片

    //创建QPixmap对象
    QPixmap pix;
    //判断是否能够加载正常显示的图片，若不能提示加载失败
    bool ret = pix.load(this->normalPath);
    if(!ret)
    {
       QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->normalPath);
       qDebug()<<str;
    }
    //设置图片的固定尺寸
    this->setFixedSize( pix.width(), pix.height() );
    //设置不规则图片的样式表
    this->setStyleSheet("QPushButton{border:0px;}");
    //设置图标
    this->setIcon(pix);
    //设置图标大小
    this->setIconSize(QSize(pix.width(),pix.height()));
}
void MyPushButton::zoom1()
{
    //创建动画对象
    QPropertyAnimation * animation = new QPropertyAnimation(this,"geometry");
    //设置时间间隔，单位毫秒
    animation->setDuration(200);
    //创建起始位置
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //创建结束位置
    animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    //设置缓和曲线，QEasingCurve::OutBounce 为弹跳效果
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //开始执行动画
    animation->start(QAbstractAnimation::DeleteWhenStopped);
}

void MyPushButton::zoom2()
{
    QPropertyAnimation * animation =  new QPropertyAnimation(this,"geometry");
    animation->setDuration(200);
    animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
    animation->setEasingCurve(QEasingCurve::OutBounce);
    animation->start(QAbstractAnimation::DeleteWhenStopped);
}

void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    //按下路径不为空，说明需要切换图片
    if(this->pressPath !="")
    {
        //创建QPixmap对象
        QPixmap pix;
        //判断是否能够加载正常显示的图片，若不能提示加载失败
        bool ret = pix.load(this->pressPath);
        if(!ret)
        {
           QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->pressPath);
           qDebug()<<str;
        }
        //设置图片的固定尺寸
        this->setFixedSize( pix.width(), pix.height() );
        //设置不规则图片的样式表
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标
        this->setIcon(pix);
        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }
    //其余事情交给父类处理
    QPushButton::mousePressEvent(e);
}
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if(this->pressPath!= "") //选中路径不为空，显示选中图片 注意：不为空不能打空格，否则不能运行
    {
        //创建QPixmap对象
        QPixmap pix;
        //判断是否能够加载正常显示的图片，若不能提示加载失败
        bool ret = pix.load(this->normalPath);
        if(!ret)
        {
           QString str=QString("图标加载失败，失败的路径是：%1！").arg(this->normalPath);
           qDebug()<<str;
        }
        //设置图片的固定尺寸
        this->setFixedSize( pix.width(), pix.height() );
        //设置不规则图片的样式表
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标
        this->setIcon(pix);
        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }
    //交给父类执行 释放事件
    QPushButton::mouseReleaseEvent(e);
}
